package com.manli.wechat.utils.wxpay;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 微信支付v2版本接口支付pojo
 * @author shensg
 */

@Data
public class WxPayPojoV2 {
    /**
     * 服务商商户的APPID
     */
    @NotBlank
    private String appid;
    /**
     * 微信支付分配的商户号
     */
    @NotBlank
    private String mch_id;

    /**
     * 子商户公众账号ID 小程序必填
     */
    private String sub_appid;
    /**
     * 微信支付分配的子商户号
     */
    private String sub_mch_id;
    /**
     *调用接口提交的终端设备号，
     */
    private String device_info;

    /**
     * 商品描述交易字段格式根据不同的应用场景建议按照以下格式上传：
     */
    @NotBlank
    private String body;
    /**
     * 附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
     */
    private String attach;
    /**
     * 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号
     */
    @NotBlank
    private String out_trade_no;
    /**
     * 符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
     */
    private String fee_type;
    /**
     * 订单总金额，只能为整数
     */
    @NotNull
    private String total_fee;
    /**
     * 支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP
     */
    @NotBlank
    private String spbill_create_ip;
    /**
     * 订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
     */
    private String time_start;
    /**
     * 订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。订单失效时间是针对订单号而言的，由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期，所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id。其他详见时间规则
     *
     * time_expire只能第一次下单传值，不允许二次修改，二次修改系统将报错。如用户支付失败后，需再次支付，需更换原订单号重新下单。
     * 建议：最短失效时间间隔大于1分钟
     */
    private String time_expire;
    /**
     * 订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠
     */
    private String goods_tag;
    /**
     *接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。;
     */
    @NotBlank
    private String notify_url;
    /**
     *JSAPI -JSAPI支付
     *
     * NATIVE -Native支付
     *
     * APP -APP支付
     */
    @NotBlank
    private String trade_type;
    /**
     * trade_type=NATIVE时，此参数必传。此id为二维码中包含的商品ID，商户自行定义。
     */
    private String product_id;
    /**
     *no_credit--指定不能使用信用卡支付
     */
    private String limit_pay;
    /**
     * trade_type=JSAPI，此参数必传，用户在主商户appid下的唯一标识。openid和sub_openid可以选传其中之一，如果选择传sub_openid,则必须传sub_appid。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。
     */
    private String openid;

    private String sub_openid;

    /**
     *Y，传入Y时，支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能，传此字段才可生效
     */
    private String receipt;


    /**
     退款 商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。
     */
    private String out_refund_no;

    /**
     *退款
     */
    private String refund_fee;

    /**
     * 退款原因
     */
    private String refund_desc;



}
